#include <mips/regdef.h>
#define STACKSP 16
#define	STACKFP 12
#define STACKGP 8
#define LA 0


//No hay ABA ni se guarda ra porque es funcion hoja
//#16 a0=c                     #*ABA de la caller*#
//#12 $fp			#***************#
//#8  $gp			#******SRA******#
//#4 --pad--			#***************#
//#0 i                          #*******LA******#
//#-----------#	

	.text
	.align 2
	.globl BuscarCaracter
	.ent BuscarCaracter

BuscarCaracter:
	.frame $fp, STACKSP, ra
	.set noreorder
	.cpload t9
	.set reorder

	#Creacion del Stack frame
	subu sp,sp,STACKSP
	.cprestore STACKGP
	sw $fp, STACKFP(sp)	
	move $fp,sp
	
	#Argument Building Area
	sw a0, STACKSP($fp) 	#Guardo s1 en el ABA de la caller
	#Guardo variables locales e inicializo en 0 a i
   	sw zero,LA+0($fp)         #i<-0
	#Levanto en registros temporales los argumentos y las variables locales
	lw t0, STACKSP($fp)   #t0<-c
	lw t1, LA+0($fp)      #t1<-i
	la t6, caracteres     #t6<-&caracteres
readByte: add t3,t6,t1       #t3<-&caracteres(i)
	  lbu t2, (t3)	     #t2<-caracteres(i)
while: 
       beq t0,t2,fin      	#Si los caracteres son iguales salgo del while
       addiu t1,t1,1		#Si no son iguales, incremento i
       b readByte	        #Salto a leer el proximo byte.
fin:
	move v0,t1	    #Devuelvo i
	lw $fp,STACKFP(sp)  #Restauro fp
	#Destruyo el stack frame
   	addu sp,sp,STACKSP
   	j ra

.end BuscarCaracter

.data 			
.align 2
caracteres: .ascii "$%&'0123456789@aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"

